﻿using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Xml.Serialization;

 

namespace XmlSerializerTest
{

	class Program
	{

		static void Main(string[] args)
		{

			//声明一个猫咪对象

			var cWhite = new Cat {
				Color = "White",
				Speed = 10,
				Saying = "White or black,  so long as the cat can catch mice,  it is a good cat"
			};

			var cBlack = new Cat {
				Color = "Black",
				Speed = 10,
				Saying = "White or black,  so long as the cat can catch mice,  it is a good cat"
			};
 

			CatCollection cc = new CatCollection { Cats = new Cat[] {
					cWhite,
					cBlack
				}
			};

 
			//序列化这个对象

			XmlSerializer serializer = new XmlSerializer(typeof(CatCollection));

			//将对象序列化输出到控制台

			serializer.Serialize(Console.Out, cc);

			Console.Read();

		}

	}

 

	[XmlRoot("cats")]

	public class CatCollection
	{

		[XmlArray("items"),XmlArrayItem("item")]

		public Cat[] Cats { get; set; }

	}

 

	[XmlRoot("cat")]

	public class Cat
	{

		//定义Color属性的序列化为cat节点的属性

		[XmlAttribute("color")]

		public string Color { get; set; }

 

		//要求不序列化Speed属性

		[XmlIgnore]
		//[XmlElement("speed")]
		public int Speed { get; set; }

 

		//设置Saying属性序列化为Xml子元素

		[XmlElement("saying")]

		public string Saying { get; set; }

	}

}